/**
 *
 */
package com.honeybees.framework.spring.mvc.model;

import java.io.Serializable;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import com.alibaba.fastjson.annotation.JSONField;

/**
 * <dl>
 * <dt><b> 模型基类 </b></dt>
 * <p>
 * <dd>功能描述</dd>
 * </dl>
 * <p>
 * Copyright (C) All rights reserved.
 * </p>
 *
 * @author 李远明
 * @version 2017-04-08 20:52
 * @since 2015-10-23 15:10:52
 * @see com.honeybees.framework.pagination.Page
 */
public class ModelSupport implements Serializable {

    private static final long serialVersionUID = -6530980905112374155L;

    // -------------------- 分页请求参数 --------------------
    /**
     * 查询起始位置
     *
     * @version 2015-10-27 15:04:14修改 pageIndex 为 offset
     * @version 2015-11-01 15:41:30 不序列化：@JSONField(serialize = false)
     * @version 2016-08-19 15:57:31 offset、limit 与 pageNumber、pageSize 的关系，请见
     * {@link com.honeybees.framework.spring.mvc.WebController#setPageParameter(HttpServletRequest, ModelSupport)}
     * 方法的注释
     */
    @JSONField(serialize = false)
    private int offset;
    /**
     * 每页显示记录条数
     *
     * @version 2015-10-27 15:05:29 修改 pageSize 为 limit
     * @version 2015-11-01 15:41:30 不序列化：@JSONField(serialize = false)
     * @version 2016-08-19 15:57:31 offset、limit 与 pageNumber、pageSize 的关系，请见
     * {@link com.honeybees.framework.spring.mvc.WebController#setPageParameter(HttpServletRequest, ModelSupport)}
     * 方法的注释
     */
    @JSONField(serialize = false)
    private int limit;

    // -------------------- 分页返回条数 --------------------
    /**
     * 数据总条数
     */
    @JSONField(serialize = false)
    private int totalCount;

    /**
     * @return 查询起始位置
     * @version 2016-08-19 15:57:31 offset、limit 与 pageNumber、pageSize 的关系，请见
     * {@link com.honeybees.framework.spring.mvc.WebController#setPageParameter(HttpServletRequest, ModelSupport)}
     * 方法的注释
     */
    public int getOffset() {
        return offset;
    }

    /**
     * @param offset 查询起始位置
     * @version 2016-08-19 15:57:31 offset、limit 与 pageNumber、pageSize 的关系，请见
     * {@link com.honeybees.framework.spring.mvc.WebController#setPageParameter(HttpServletRequest, ModelSupport)}
     * 方法的注释
     */
    public void setOffset(int offset) {
        this.offset = offset;
    }

    /**
     * @return 每页显示记录条数
     * @version 2016-08-19 15:57:31 offset、limit 与 pageNumber、pageSize 的关系，请见
     * {@link com.honeybees.framework.spring.mvc.WebController#setPageParameter(HttpServletRequest, ModelSupport)}
     * 方法的注释
     */
    public int getLimit() {
        return limit;
    }

    /**
     * @param limit 每页显示记录条数
     * @version 2016-08-19 15:57:31 offset、limit 与 pageNumber、pageSize 的关系，请见
     * {@link com.honeybees.framework.spring.mvc.WebController#setPageParameter(HttpServletRequest, ModelSupport)}
     * 方法的注释
     */
    public void setLimit(int limit) {
        this.limit = limit;
    }

    /**
     * @return 数据总条数
     */
    public int getTotalCount() {
        return totalCount;
    }

    /**
     * @param totalCount 数据总条数
     */
    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }

    /**
     * 开始日期
     *
     * @version 2016-10-21 10:03:55 用于查询
     */
    @JSONField(serialize = false)
    private String startTime;
    /**
     * 结束日期
     *
     * @version 2016-10-21 10:03:55 用于查询
     */
    @JSONField(serialize = false)
    private String endTime;

    /**
     * 开始日期
     *
     * @version 2016-10-21 10:03:55 用于查询
     */
    public String getStartTime() {
        return startTime;
    }

    /**
     * 开始日期
     *
     * @version 2016-10-21 10:03:55 用于查询
     */
    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    /**
     * 结束日期
     *
     * @version 2016-10-21 10:03:55 用于查询
     */
    public String getEndTime() {
        return endTime;
    }

    /**
     * 结束日期
     *
     * @version 2016-10-21 10:03:55 用于查询
     */
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    /**
     * <DL>
     * <DT><B> toString </B></DT>
     * <p>
     * <DD>详细介绍</DD>
     * </DL>
     * <p>
     *
     * @return a string representation of the object.
     * @version 2015-05-02 17:41:44
     * @version 2015-05-02 17:42:09 改用 {@link ToStringStyle#SHORT_PREFIX_STYLE}
     * @see Object#toString()
     */
    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
    }

}
